A typical encryption process converts cleartext into ciphertext by combining the cleartext with one or more cipher keys. For instance, a simple XOR cipher converts a stream of cleartext into a stream of ciphertext by performing an XOR operation on successive units (e.g., 8-bit units) of cleartext and corresponding cipher keys (e.g., 8-bit keys).
The performance of an encryption process can be evaluated according to various metrics, such as its cryptographic strength, speed of execution, memory consumption, flexibility, and so on. These and other metrics depend generally on the nature of the cipher keys and the manner in which they are generated. For instance, cipher keys that are difficult to replicate may produce stronger encryption than those that are easier to replicate, but may be slower to produce.
In light of these and other considerations, there is a general need for techniques that produce, in an efficient manner, cipher keys that are difficult to replicate.